//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
#include "stdio.h"
#include "GrvSCPH1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)

//---------------------------------------------------------------------------
__fastcall TGrvSCPH::TGrvSCPH(void)
{
  L_Registro = new TList();
}

//---------------------------------------------------------------------------
__fastcall TGrvSCPH::~TGrvSCPH(void)
{

}

//---------------------------------------------------------------------------
void __fastcall TGrvSCPH::GravaRegistros(void)
{
  try
   {
    for(int i=0;i<L_Registro->Count;i++)
     {
      R = (struct REGISTRO *)L_Registro->Items[i];
      Fpr(W,"%8.8s",DataStr(R->DATA));
      Fpr(W,"%08.8d",R->CONTA_DEB);
      Fpr(W,"%08.8d",R->CONTA_CRED);
      Fpr(W,"%017.2f",R->VALOR);
      Fpr(W,"%08.8d",R->HISTORICO);
      Fpr(W,"%-64.64s",R->COMPLEMENTO.c_str());
      Fpr(W,"%03.3d",R->DEBITO_ESTAB);
      Fpr(W,"%03.3d",R->CREDITO_ESTAB);
      Fpr(W,"%03.3d",R->DEBITO_CC[0]);
      Fpr(W,"%03.3d",R->CREDITO_CC[1]);
      Fpr(W,"%08.8d",R->CONTRAPARTIDA);
      Fpr(W,"%06.6d",R->CONJUNTO_LCTO);
      Fpr(W,"%-40.40s",R->NOME_CTA_DEB.c_str());
      Fpr(W,"%-20.20s",R->IDENT_CTA_DEB.c_str());
      Fpr(W,"%01.1d",R->TIPO_CTA_DEB);
      Fpr(W,"%01.1d",R->TIPO_IDENT_CTA_DEB);
      Fpr(W,"%-40.40s",R->NOME_CTA_CRED.c_str());
      Fpr(W,"%-20.20s",R->IDENT_CTA_CRED.c_str());
      Fpr(W,"%01.1d",R->TIPO_CTA_CRED);
      Fpr(W,"%01.1d",R->TIPO_IDENT_CTA_CRED);
      Fpr(W,"%-40.40s",R->NOME_CONTRAP.c_str());
      Fpr(W,"%-20.20s",R->IDENT_CONTRAP.c_str());
      Fpr(W,"%01.1d",R->TIPO_CONTRAP);
      Fpr(W,"%01.1d",R->TIPO_IDENT_CONTRAP);
      Fpr(W,"%-12.12s",R->ARQUIVAMENTO.c_str());
      Fpr(W,"%05.5d",R->DEBITO_CC[0]);
      Fpr(W,"%05.5d",R->CREDITO_CC[1]);
      Fpr(W,"%51s"," ");
      Fpr(W,"\n");
     }
   }
  __finally
   {
    L_Registro->Clear();
    delete L_Registro;
   }
}

//---------------------------------------------------------------------------
AnsiString __fastcall TGrvSCPH::AjustaNumerico(double Valor, int Decimais)
{
  AnsiString Retorno = "";
  AnsiString S = Redondo(Valor,Decimais);
  for(int i = 1; i <= S.Length(); i++)
   if(S[i] == '.')
    Retorno += "";
   else
    Retorno += S[i];
  return(Retorno);
}

//---------------------------------------------------------------------------
void __fastcall TGrvSCPH::Limpa(struct REGISTRO *R)
{
  R->DATA = 0;
  R->CONTA_DEB = 0;
  R->CONTA_CRED = 0;
  R->VALOR = 0.00;
  R->HISTORICO = 0;
  R->COMPLEMENTO = "";
  R->DEBITO_ESTAB = 0;
  R->CREDITO_ESTAB = 0;
  R->DEBITO_CC[0] = 0;
  R->CREDITO_CC[0] = 0;
  R->CONTRAPARTIDA = 0;
  R->CONJUNTO_LCTO = 0;
  R->NOME_CTA_DEB = "";
  R->IDENT_CTA_DEB = 0;
  R->TIPO_CTA_DEB = 0;
  R->TIPO_IDENT_CTA_DEB = 0;
  R->NOME_CTA_CRED = "";
  R->IDENT_CTA_CRED = 0;
  R->TIPO_CTA_CRED = 0;
  R->TIPO_IDENT_CTA_CRED = 0;
  R->NOME_CONTRAP= "";
  R->IDENT_CONTRAP = 0;
  R->TIPO_CONTRAP = 0;
  R->TIPO_IDENT_CONTRAP = 0;
  R->ARQUIVAMENTO = "";
  R->DEBITO_CC[1] = 0;
  R->CREDITO_CC[1] = 0;
}

//---------------------------------------------------------------------------
void __fastcall TGrvSCPH::Novo(void)
{
  R = new struct REGISTRO;
}

//---------------------------------------------------------------------------
void __fastcall TGrvSCPH::AbreArquivo(AnsiString Arquivo)
{
  _rtl_close(_rtl_creat(Arquivo.c_str(), FA_ARCH));
  W = fopen(Arquivo.c_str(),"w+");
  if(W == NULL)
   throw Exception("Erro abrindo arquivo destino.");
}

//---------------------------------------------------------------------------
void __fastcall TGrvSCPH::FechaArquivo(void)
{
  fclose(W);
}
